package cn.iocoder.yudao.module.trade.aftersale.vo;

import cn.iocoder.yudao.module.api.shop.info.dto.ShopInfoDTO;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  这里是文件说明
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/05/19
 */
@Data
public class AppAfterSaleOrderVO {

    @Schema(description = "交易订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long orderId;

    @Schema(description = "交易交易单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private String orderNo;

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long userId;

    @Schema(description = "店铺编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long shopId;

    @Schema(description = "店铺信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private ShopInfoDTO shop;

    @Schema(description = "售后流水号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1146347329394184195")
    private String no;

    @Schema(description = "售后状态：10-申请中、20-卖家通过、30-待卖家收货、40-等待平台退款、50-完成、61-买家取消售后、62-卖家拒绝、63-卖家拒绝收货", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer status;

    @Schema(description = "售后方式：0-无退款、10-仅退款、20-退货退款", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer way;

    @Schema(description = "售后类型：10-售中退款、20-售后退款", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer type;

    @Schema(description = "申请原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private String applyReason;

    @Schema(description = "补充描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private String applyDescription;

    @Schema(description = "补充凭证图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private List<String> applyPicUrls;

    @Schema(description = "售后产品信息")
    private List<AppAfterSaleSkuVO> skus;

    @Schema(description = "审批备注，只有审批不通过才会填写", example = "货物损坏")
    private String auditReason;

    @Schema(description = "寄送时间")
    private LocalDateTime deliveryTime;

    @Schema(description = "寄送姓名", example = "羡民")
    private String deliveryName;

    @Schema(description = "寄送手机号", example = "1285116029")
    private String deliveryMobile;

    @Schema(description = "寄送省份编号", example = "520000")
    private Integer deliveryProvinceId;

    @Schema(description = "寄送省份名称", example = "贵州省")
    private String deliveryProvinceName;

    @Schema(description = "寄送城市编号", example = "520100")
    private Integer deliveryCityId;

    @Schema(description = "寄送城市名称", example = "贵阳市")
    private String deliveryCityName;

    @Schema(description = "寄送区县编号", example = "520102")
    private Integer deliveryAreaId;

    @Schema(description = "寄送区县名称", example = "南明区")
    private String deliveryAreaName;

    @Schema(description = "寄送详细地址", example = "花果园金融街5号驰通集团公司")
    private String deliveryDetailAddress;

    @Schema(description = "实付金额，单位：分", example = "100")
    private Integer payPrice;

    @Schema(description = "退款金额，单位：分", example = "100")
    private Integer refundPrice;

    @Schema(description = "退款时间")
    private LocalDateTime refundTime;

    @Schema(description = "退货快递公司编号", example = "1")
    private Long logisticsId;

    @Schema(description = "退货物流单号", example = "SF123456789")
    private String logisticsNo;

    @Schema(description = "补充描述", example = "已发中通快递")
    private String logisticsDescription;

    @Schema(description = "补充凭证图片")
    private List<String> logisticsPicUrls;

    @Schema(description = "收货时间")
    private LocalDateTime receiveTime;

    @Schema(description = "收货备注")
    private String receiveReason;

    @Schema(description = "买家电话号码，只在卖家售后详情展示")
    private String buyerPhone;

    @Schema(description = "卖家电话号码，只在买家售后详情展示")
    private String sellerPhone;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

}
